package com.itheima.service.impl;

import com.itheima.dao.ProductDao;
import com.itheima.dao.impl.ProductDaoImpl;
import com.itheima.pojo.PageBean;
import com.itheima.pojo.Product;
import com.itheima.service.ProductService;

import java.util.List;

/**
 * @author ZhangYan
 * @Date 2021/1/16
 */
public class ProductServiceImpl implements ProductService {

    private ProductDao productDao = new ProductDaoImpl();
    //查询最热
    @Override
    public List<Product> findHot() {
        try {
            List<Product> hotList = productDao.findHot();
            return hotList;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //查询最新
    @Override
    public List<Product> findNew() {
        try {
            List<Product> newList = productDao.findNew();
            return newList;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //根据ID查询商品详情
    @Override
    public Product finById(String pid) {
        try {
            Product product = productDao.finById(pid);
            return product;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     *  获取pageBean
     *     五个属性
     *       currentPage当前页码 ： 来自 前端传递过来的
     *       pageSize 每页显示条数: 来自常量这里(一般在web层确定)
     *       totalCount 总条数 ： 来自dao查询
     *       totalPage 总页数  来自 总条数和每页显示条数计算值
     *       list  当前页显示的数据  来自 dao查询
     * @return
     */
    @Override
    public PageBean<Product> findByPage(String cid, int currentPage, int pageSize) {
        PageBean<Product> pageBean = new PageBean<>();

        try {
            //封装pageBean对象属性
                //1.当前页码
                pageBean.setCurrentPage(currentPage);
                //2.每页显示数量
                pageBean.setPageSize(pageSize);
                //3.调用Dao层方法 获取总条数
                long totalCount = productDao.totalCount(cid);
                pageBean.setTotalCount(totalCount);
                //4.总页数
                int totalPage = (int) Math.ceil ((totalCount*1.0) / pageSize);
                pageBean.setTotalPage(totalPage);
                //5.当前页显示数据List
                List<Product> list = productDao.findByPage(cid, currentPage, pageSize);
                pageBean.setList(list);

        } catch (Exception e) {
            e.printStackTrace();
            //如果有异常
            pageBean = null;
        }

        return pageBean;
    }
}
